﻿using System.Reflection;

namespace _80删除有序数组中的重复数2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Solution.RemoveDuplicates(new int[] { 1, 1, 1, 2, 2, 3 }));  
        }
    }

    /*
     * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使得出现次数超过两次的元素只出现两次 ，返回删除后数组的新长度。不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
     */
    public class Solution
    {
        public static int RemoveDuplicates(int[] nums)
        {
            int n = nums.Length;
            if (n <= 2)
            {
                return n;
            }
            int slow = 2, fast = 2;
            while (fast < n)
            {
                if (nums[slow - 2] != nums[fast])
                {
                    nums[slow] = nums[fast];
                    slow++;
                }
                fast++;
            }
            return slow;

            
        }
    }
}